/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.client.services;

import fr.generali.accueilclient.client.om.IContact;
import fr.generali.accueilclient.client.om.IPersonne;
import fr.generali.accueilclient.commun.exception.AccueilClientBusinessException;

/**
 * Service pour tout ce qui concerne les données client
 * 
 * @author selrhazala
 */
public interface IClientService {

    /**
     * Créé le client
     * 
     * @param client le client
     * @return l'id client physique en position 0 et l'id client morale en position 1
     *         car 2 id dans le cas d'un PRO
     * @throws AccueilClientBusinessException exception fonctionnelle
     */
    String[] creerClient(IPersonne client) throws AccueilClientBusinessException;
    
    /**
     * modifie le client
     * 
     * @param client le client
     * @return String la valeur retour
     * @throws AccueilClientBusinessException exception fonctionnelle
     */
    String modifierClient(IPersonne client) throws AccueilClientBusinessException;
    
    /**
     * supprime le client courant
     * 
     * @param client le client
     * @throws AccueilClientBusinessException exception fonctionnelle
     */
    void supprimerClient(IPersonne client) throws AccueilClientBusinessException;
    
    /**
     * @param contact le contact
     * @return String
     * @throws AccueilClientBusinessException exception fonctionnelle
     */
    String gererDocument(IContact contact) throws AccueilClientBusinessException;
    
    /**
     * @param contact le contact
     * @throws AccueilClientBusinessException exception fonctionnelle
     */
    void desactiverDocument(IContact contact) throws AccueilClientBusinessException;
    
    /**
     * effectue le changement de la nature du client
     * 
     * @param client le client
     * @return String la valeur retour
     * @throws AccueilClientBusinessException exception fonctionnelle
     */
    String changerNatureClient(IPersonne client) throws AccueilClientBusinessException;
    
}
